package com.xu.junit;

import org.junit.Ignore;
import org.junit.Test;

import java.util.ArrayList;

import static org.junit.Assert.fail;

/**
 * @Ignore,@Test标签介绍
 */
public class JUnitStudy1_base {

    /**
     * 在有性能要求的方法测试时.超出预期时间时测试不通过.
     */
    @Test(timeout = 1000)
    public void testTimeout() {
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    /**
     * 预期会抛IndexOutOfBoundsException</br>
     * 如果没有抛出异常就测试不通过.用于服务类需要在边界值抛出异常时通知上层,但是未按预期抛出时测试不通过.
     */
    @Test(expected = IndexOutOfBoundsException.class)
    public void testExpected() {
        new ArrayList<Object>().get(1);
    }

    /**
     * 用于功能已经废弃后标识为忽略测试.
     */
    @Ignore
    public void testIgnore() {
        System.out.println("Ignore");
        fail("Missing assertions/failures");
    }

    /**
     * TDD里使用fail来标记未完成的功能.
     */
    @Test
    public void testFail() {
        fail("功能正在开发中...");
    }

}
